home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-03-04 | 3.4 KB | 124 lines | [TEXT/ToyS] |
- -- Internal/User setable globals
- property gasLinkSet : false -- Has the friend been asked for?
- property gasLinkNeed : true
- property kasLinkUserDft : "CasaVision" -- Our friend on all machines
- property kasLinkPassDft : "" -- Our friend's password on all machines
-
- -- Internal globals
- global gasLinkUser --
- global gasLinkPass --
-
- global gasOurZone -- Set to zone of gasOurAlias
- global gasOurServer -- Set to server of gasOurAlias
- global gasOurName -- Name of application on remote server
- global gasOurAction -- Set to choice of user (quit, shutdown, restart)
-
-
- on open fsObjs
- repeat with fsObj in fsObjs
- set f to (fsObj as string) as alias -- Some weird stuff, I know...
-
- set fileLoc to alias info from (f as alias)
-
- set gasOurName to original name of fileLoc
- set gasOurServer to alias server of fileLoc
- set gasOurZone to alias zone of fileLoc
-
- set fileVol to alias volume of fileLoc
- set volAlias to (fileVol & ":") as alias
-
- GetFriend(false)
-
- talk as user gasLinkUser ¬
- with password gasLinkPass ¬
- on server gasOurServer ¬
- in AppleTalk zone gasOurZone
-
- tell application "Finder" of machine gasOurServer of zone gasOurZone to ¬
- set newFile to duplicate f -- to volAlias
- end repeat
- end open
-
-
-
-
- on GetFriend(override) -- Should later use some modifier key to override?!?
- if (gasLinkNeed) then GetOneFriend(override)
- end GetFriend
-
-
- on GetOneFriend(override)
- set isLink to true -- Only linking in this script!
- set userMode to "linking"
- set defUser to kasLinkUserDft
- set defPass to kasLinkPassDft
- set passButtons to {"Cancel", "OK"}
- set passButton to 2
-
- set usrPwd to KeyChainLookUp(gasOurZone, gasOurServer, isLink)
-
- if (override or usrPwd is {}) then
- set chosen to display dialog ¬
- "Enter the friendly " & userMode & ¬
- " user's name…" default answer defUser ¬
- default button 2 with icon note
-
- if (the button returned of chosen is "OK") then
- set defUser to the text returned of chosen
- else
- return
- end if
-
- set chosen to display dialog ¬
- "Enter the friendly " & userMode & ¬
- " user's password…" buttons passButtons ¬
- default answer defPass default button passButton with icon note
-
- if (the button returned of chosen is not "Cancel") then
- set defPass to the text returned of chosen
- else
- return
- end if
-
- -- Save encrypted user/pass for future access
- KeyChainSave(gasOurZone, gasOurServer, isLink, defUser, defPass, "")
- else
- set defUser to item 1 of usrPwd
- set defPass to item 2 of usrPwd
- end if
-
- set gasLinkSet to true
- set gasLinkUser to defUser
- set gasLinkPass to defPass
- end GetOneFriend
-
-
- property kasKeyChainPassword : "PowerScript" -- Encrypt stored data with this
- property kasPrefsFileName : "PowerScript Prefs" -- File name in <Preferences>
-
- on KeyChainLookUp(zoneName, serverName, isLinking)
- set prefOwner to "πSRV"
- if (isLinking) then set prefOwner to "πLNK"
-
- try
- set myKeyData to load preference named (zoneName & ":" & serverName) ¬
- of type prefOwner in file named kasPrefsFileName
- on error
- return {}
- end try
-
- return (encrypt the data myKeyData with password kasKeyChainPassword)
- end KeyChainLookUp
-
-
- on KeyChainSave(zoneName, serverName, isLinking, usr, pwd, ntPwd)
- set myKey to encrypt the data {usr, pwd, ntPwd} with password kasKeyChainPassword
-
- set prefOwner to "πSRV"
- if (isLinking) then set prefOwner to "πLNK"
-
- save preference myKey named (zoneName & ":" & serverName) ¬
- of type prefOwner ¬
- in file named kasPrefsFileName
- end KeyChainSave
-